home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / ewl / ewl_embed.h < prev    next >
C/C++ Source or Header  |  2006-01-09  |  5KB  |  145 lines

  1. #ifndef __EWL_EMBED_H__
  2. #define __EWL_EMBED_H__
  3.  
  4. /**
  5.  * @file ewl_embed.h
  6.  * @defgroup Ewl_Embed Embed: A Container for Displaying on an Evas
  7.  * Defines the Ewl_Embed class to provide EWL with the ability to work with an
  8.  * evas.
  9.  *
  10.  * @{
  11.  */
  12.  
  13. /**
  14.  * @themekey /embed/file
  15.  * @themekey /embed/group
  16.  */
  17.  
  18. /**
  19.  * The embed structure is mostly a container for holding widgets and a
  20.  * wrapper evas smart object.
  21.  */
  22. typedef struct Ewl_Embed Ewl_Embed;
  23.  
  24. /**
  25. * Typedef and abstract out embedded evas windows
  26. */
  27. typedef void *Ewl_Embed_Evas_Window;
  28.  
  29. /**
  30.  * @def EWL_EMBED(widget)
  31.  * @brief Typecast a pointer to an Ewl_Embed pointer.
  32.  */
  33. #define EWL_EMBED(widget) ((Ewl_Embed *) widget)
  34.  
  35. /**
  36. * @def EWL_EMBED_EVAS_WINDOW(window)
  37. * @brief Typecast a pointer to an Evas_Window
  38. */
  39. #define EWL_EMBED_EVAS_WINDOW(window) ((Ewl_Embed_Evas_Window *)window)
  40.  
  41. /**
  42.  * @struct Ewl_Embed
  43.  * @brief The class inheriting from Ewl_Container that acts as a top level
  44.  * widget for interacting with the evas.
  45.  */
  46. struct Ewl_Embed
  47. {
  48.     Ewl_Overlay     overlay;     /**< Inherits from the Ewl_Overlay class */
  49.  
  50.     Evas           *evas;        /**< Evas where drawing takes place. */
  51.     void           *evas_window; /**< The window holding the evas. */
  52.  
  53.     Evas_Object    *smart;       /**< Manipulate Ewl_Embed from evas */
  54.     Evas_Object    *ev_clip;     /**< Clip box to receive evas events */
  55.     Ecore_DList    *tab_order;   /**< Order of widgets to send focus */
  56.  
  57.     Ecore_Hash     *obj_cache;  /**< Hash of object queues for reuse */
  58.  
  59.     int             max_layer;   /**< The maximum widget layer used */
  60.     int             focus;       /**< Indicates if it receives focus */
  61.  
  62.     struct
  63.     {
  64.         Ewl_Widget *clicked;
  65.         Ewl_Widget *focused;
  66.         Ewl_Widget *mouse_in;
  67.     } last;
  68.  
  69.     Ewl_Widget *dnd_widget;
  70. };
  71.  
  72. Ewl_Widget     *ewl_embed_new(void);
  73. int             ewl_embed_init(Ewl_Embed *emb);
  74. void            ewl_embed_shutdown(void);
  75. Evas_Object    *ewl_embed_evas_set(Ewl_Embed *emb, Evas *evas,
  76.                    Ewl_Embed_Evas_Window *evas_window);
  77.  
  78. void            ewl_embed_focus_set(Ewl_Embed *embed, int f);
  79. int             ewl_embed_focus_get(Ewl_Embed *embed);
  80.  
  81. void        ewl_embed_active_set(Ewl_Embed *embed, unsigned int act);
  82. Ewl_Embed      *ewl_embed_active_embed_get(void);
  83.  
  84. int             ewl_embed_max_layer_get(Ewl_Embed *embed);
  85. void            ewl_embed_max_layer_set(Ewl_Embed *embed, int layer);
  86. void            ewl_embed_key_down_feed(Ewl_Embed *embed, char *keyname,
  87.                     unsigned int modifiers);
  88. void            ewl_embed_key_up_feed(Ewl_Embed *embed, char *keyname,
  89.                       unsigned int modifiers);
  90. void            ewl_embed_mouse_down_feed(Ewl_Embed *embed, int b, int clicks,
  91.                       int x, int y, unsigned int modifiers);
  92. void            ewl_embed_mouse_up_feed(Ewl_Embed *embed, int b, int x,
  93.                     int y, unsigned int modifiers);
  94. void            ewl_embed_mouse_move_feed(Ewl_Embed *embed, int x, int y,
  95.                       unsigned int modifiers);
  96.  
  97. void        ewl_embed_dnd_position_feed(Ewl_Embed *embed, int x, int y,int*,int*,int*,int*);
  98. void        ewl_embed_dnd_enter_feed(Ewl_Embed *embed, int x, int y, void* dnd_event);
  99. void        ewl_embed_dnd_drop_feed(Ewl_Embed* , int x, int y, int internal);
  100.  
  101. void            ewl_embed_mouse_out_feed(Ewl_Embed *embed, int x, int y,
  102.                      unsigned int modifiers);
  103. void            ewl_embed_mouse_wheel_feed(Ewl_Embed *embed, int x, int y,
  104.                        int z, int dir, unsigned int mods);
  105.  
  106. void            ewl_embed_font_path_add(char *path);
  107. Ewl_Embed      *ewl_embed_evas_window_find(Ewl_Embed_Evas_Window *win);
  108. Ewl_Embed      *ewl_embed_widget_find(Ewl_Widget *w);
  109. void            ewl_embed_object_cache(Ewl_Embed *e, Evas_Object *obj);
  110. Evas_Object    *ewl_embed_object_request(Ewl_Embed *e, char *type);
  111.  
  112. void            ewl_embed_tab_order_append(Ewl_Embed *e, Ewl_Widget *w);
  113. void        ewl_embed_tab_order_prepend(Ewl_Embed *e, Ewl_Widget *w);
  114. void        ewl_embed_tab_order_insert(Ewl_Embed *e, Ewl_Widget *w, 
  115.                        unsigned int idx);
  116. void        ewl_embed_tab_order_insert_before(Ewl_Embed *e, Ewl_Widget *w,
  117.                          Ewl_Widget *before);
  118. void        ewl_embed_tab_order_insert_after(Ewl_Embed *e, Ewl_Widget *w,
  119.                          Ewl_Widget *after);
  120. void            ewl_embed_tab_order_remove(Ewl_Embed *e, Ewl_Widget *w);
  121. void            ewl_embed_tab_order_next(Ewl_Embed *e);
  122. void        ewl_embed_tab_order_previous(Ewl_Embed *e);
  123.  
  124. void        ewl_embed_focused_widget_set(Ewl_Embed *e, Ewl_Widget *w);
  125. Ewl_Widget     *ewl_embed_focused_widget_get(Ewl_Embed *e);
  126. void        ewl_embed_info_widgets_cleanup(Ewl_Embed *e, Ewl_Widget *w);
  127.  
  128. void            ewl_embed_coord_to_screen(Ewl_Embed *e, int xx, int yy,
  129.                       int *x, int *y);
  130.  
  131. /*
  132.  * Internally used callbacks, override at your own risk.
  133.  */
  134. void ewl_embed_realize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  135. void ewl_embed_unrealize_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  136. void ewl_embed_configure_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  137. void ewl_embed_focus_out_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  138. void ewl_embed_destroy_cb(Ewl_Widget *w, void *ev_data, void *user_data);
  139.  
  140. /**
  141.  * @}
  142.  */
  143.  
  144. #endif                /* __EWL_EMBED_H__ */
  145.